﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace CDStore3Tiers
{
   public class XuLyChiTietHoaDon
    {
        static StoreCDDataContext dt ;
       /// <summary>
       /// khởi tạo lớp xử lý chi tiết hóa đơn
       /// </summary>
       public XuLyChiTietHoaDon()
       {
           dt = new StoreCDDataContext();
           dt.Connection.ConnectionString = getConfig.getConnection();
       }
        //public static bool TonTai(int s)
        //{
        //    dt = new StoreCDDataContext();
        //    dt.Connection.ConnectionString = getConfig.getConnection();
        //    return (from d in dt.HoaDonBans
        //            where d.MaHDBH == s
        //            select d).Count() > 0;
        //}
       /// <summary>
       /// Lấy danh sách chi tiết hóa đơn theo mã hóa đơn
       /// </summary>
       /// <param name="maso">mã hóa đơn</param>
       /// <returns>Danh sách chi tiết hóa đơn kết quả</returns>
        public static List<vwChitietHD1> LayDsChiTietHoaDon_MaHD(int maso)
        {
            dt = new StoreCDDataContext();
            dt.Connection.ConnectionString = getConfig.getConnection();
            List<vwChitietHD1> ct = (from ctiet in dt.vwChitietHD1s
                                     where ctiet.MaHDBH == maso
                                     select ctiet).ToList<vwChitietHD1>();
            return ct;
        }
        /// <summary>
        /// Thêm một chi tiết hóa đơn khi có trường đặt hàng null và không có sự kiện xảy ra.
        /// </summary>
        /// <param name="mahoadon">mã hóa đơn</param>
        /// <param name="madia">mã đĩa</param>
        /// <param name="soluong">số lượng đĩa</param>
        /// <param name="dongia">đơn giá </param>
        /// <param name="thanhtien">thành tiền của một chi tiết hóa đơn</param>
        public static void ThemChiTietHoaDon(int mahoadon, int madia, int soluong, decimal dongia, decimal thanhtien)
        {
            dt = new StoreCDDataContext();
            dt.Connection.ConnectionString = getConfig.getConnection();
            dt.ChiTietHoaDonBanHang_Insert(mahoadon, madia, soluong, dongia, 0, null, thanhtien);
            dt.SubmitChanges();
        }
        /// <summary>
        /// Thêm một chi tiết đặt hàng khi không có đặt hàng và có sự kiện xảy ra
        /// </summary>
        /// <param name="mahoadon">mã hóa đơn</param>
        /// <param name="madia">mã đĩa</param>
        /// <param name="soluong">số lượng</param>
        /// <param name="dongia">đơn giá của đĩa nhạc</param>
        /// <param name="sukien">mã sự kiện</param>
        /// <param name="thanhtien">thành tiền của đĩa nhạc</param>
        public static void ThemChiTietHoaDon(int mahoadon, int madia, int soluong, decimal dongia, int sukien, decimal thanhtien)
        {
            dt = new StoreCDDataContext();
            dt.Connection.ConnectionString = getConfig.getConnection();
            dt.ChiTietHoaDonBanHang_Insert(mahoadon, madia, soluong, dongia, sukien, null, thanhtien);
            dt.SubmitChanges();
        }
        /// <summary>
        /// Cập nhật một chi tiết hóa đơn không có đặt hàng và có sự kiện trong thời gian tạo hóa đơn
        /// </summary>
        /// <param name="mact">mã chi tiết hóa đơn</param>
        /// <param name="mahd">mã hóa đơn</param>
        /// <param name="madia">mã đĩa</param>
        /// <param name="soluong">số lượng</param>
        /// <param name="dongia">đơn giá của đĩa nhạc</param>
        /// <param name="sukien">mã sự kiện</param>
        /// <param name="thanhtien">thành tiền của chi tiết hóa đơn</param>
       public static void CapNhatChiTietHD(int mact,int mahd,int madia,int soluong,decimal dongia,int sukien,decimal thanhtien)
       {
           dt = new StoreCDDataContext();
           dt.Connection.ConnectionString = getConfig.getConnection();
           dt.ChiTietHoaDonBanHang_Update(mact, mahd, madia, soluong, dongia, sukien, null, thanhtien);
           dt.SubmitChanges();
       }
       /// <summary>
       /// Cập nhật chi tiết đặt hàng khi có sự kiện và có đặt hàng.
       /// </summary>
       /// <param name="mact">mã chi tiết hóa đơn</param>
       /// <param name="mahd">mã hóa đơn</param>
       /// <param name="madia">mã đĩa</param>
       /// <param name="soluong">số lượng đĩa nhạc</param>
       /// <param name="dongia">đơn giá của đĩa nhạc</param>
       /// <param name="sukien">mã sự kiện</param>
       /// <param name="dathang">mã đặt hàng</param>
       /// <param name="thanhtien">thành tiền của chi tiết hóa đơn</param>
       public static void CapNhatChiTietHD_DatHang(int mact, int mahd, int madia, int soluong, decimal dongia, int sukien,int dathang, decimal thanhtien)
       {
           dt = new StoreCDDataContext();
           dt.Connection.ConnectionString = getConfig.getConnection();
           dt.ChiTietHoaDonBanHang_Update(mact, mahd, madia, soluong, dongia, sukien, dathang, thanhtien);
           dt.SubmitChanges();
       }
       /// <summary>
       /// Xóa chi tiết hóa đơn
       /// </summary>
       /// <param name="mact">mã chi tiết hóa đơn</param>
       /// <param name="mahoadon">mã hóa đơn</param>
       public static void XoaChiTietHoaDon(int mact, int mahoadon)
       {
           dt.ChiTietHoaDonBanHang_Delete(mact, mahoadon);
           dt.SubmitChanges();
       }
    }

}
